unit clsMedida_Linear;

interface

uses Dm,dbtables,biblio,Sysutils;
type
      TMedida_Linear = class(tobject)
   public
      med_medida :double;
      procedure  Gravar(ppro_codigo,pmed_lado :string);
      procedure  Excluir(ppro_codigo,pmed_lado :string);
      procedure  Excluir_produto(ppro_codigo:string);
      function   Recuperar(ppro_codigo,pmed_lado :string):boolean;
      procedure  Consultar(var p_q:TQuery; ppro_codigo:string);
      function   SomaMedidaProduto(ppro_codigo:string):double;
   end;

implementation

{ TMedida_Linear }

procedure TMedida_Linear.Consultar(var p_q:TQuery; ppro_codigo: string);
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from medida_linear where Pro_codigo=:k_Pro_codigo');
  p_q.parambyname('k_Pro_codigo').asstring:=ppro_codigo;
end;

procedure TMedida_Linear.Excluir(ppro_codigo, pmed_lado: string);
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.DatabaseName:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('delete FROM medida_linear where pro_codigo=:k_pro_codigo and med_lado=:k_med_lado');
  tq.parambyname('k_pro_Codigo').asstring := ppro_codigo;
  tq.parambyname('k_med_lado').AsString   := pmed_lado;
  tq.ExecSQL;
  tq.close;
  tq.free;
end;

procedure TMedida_Linear.Excluir_produto(ppro_codigo: string);
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.DatabaseName:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('delete FROM medida_linear where pro_codigo=:k_pro_codigo');
  tq.parambyname('k_pro_Codigo').asstring := ppro_codigo;
  tq.ExecSQL;
  tq.close;
  tq.free;
end;

procedure TMedida_Linear.Gravar(ppro_codigo, pmed_lado: string);
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.DatabaseName:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM medida_linear where pro_codigo=:k_pro_codigo and med_lado=:k_med_lado');
  tq.parambyname('k_pro_Codigo').asstring := ppro_codigo;
  tq.parambyname('k_med_lado').AsString   := pmed_lado;
  tq.open;
  if tq.eof then begin
  	tq.sql.clear;
	  tq.params.clear;
     tq.sql.add('INSERT INTO medida_linear VALUES(:k_pro_codigo,'+
     ':k_med_lado,'+
     ':K_med_medida)');
  end else begin
  	tq.sql.clear;
	  tq.params.clear;
     tq.sql.add('UPDATE medida_linear SET med_medida=:k_med_medida '+
     'WHERE pro_codigo=:k_pro_codigo and med_lado=:k_med_lado');
  end;
  tq.parambyname('k_pro_codigo').AsString :=ppro_codigo;
  tq.parambyname('k_med_lado').AsString   :=pmed_lado;
  tq.parambyname('k_med_medida').AsFloat  :=med_medida;
	tq.Close;
  tq.ExecSQL;
  tq.close;
  tq.Free;
end;

function TMedida_Linear.Recuperar(ppro_codigo, pmed_lado: string): boolean;
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.DatabaseName:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM medida_linear where pro_codigo=:k_pro_codigo and med_lado=:k_med_lado');
  tq.parambyname('k_pro_Codigo').asstring := ppro_codigo;
  tq.parambyname('k_med_lado').AsString   := pmed_lado;
  tq.open;
  if tq.eof then
    Result := false
  else begin
    Result :=true;
    med_medida := tq.fieldbyname('med_medida').AsFloat;
  end;
  tq.close;
  tq.free;
end;

function TMedida_Linear.SomaMedidaProduto(ppro_codigo: string): double;
var tq:TQuery;
begin
  tq:=Tquery.Create(DmInt);
  tq.DatabaseName:=DmInt.Db.DatabaseName;
  tq.active:=False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM medida_linear where pro_codigo=:k_pro_codigo');
  tq.parambyname('k_pro_Codigo').asstring := ppro_codigo;
  tq.open;
  Result := 0;
  while not tq.eof do begin
    Result := Result + tq.fieldbyname('med_medida').AsFloat;
    tq.next;
  end;
  tq.close;
  tq.free;
end;

end.
